package controller;

import view.IHMVue;

import model.MoteurMetronome;
/**
 * Controlleur qui est le lien entre le Moteur Metronome et l'IHM 
 * 
 */
public class Controleur{
	
	private MoteurMetronome mm;
	private IHMVue ihm;

	public MoteurMetronome getMm() {
		return mm;
	}

	public void setMm(MoteurMetronome mm) {
		this.mm = mm;
	}

	public IHMVue getIhm() {
		return ihm;
	}

	public void setIhm(IHMVue ihm) {
		this.ihm = ihm;
	}
	
	/**
	 * Demarer le Moteur Metronome
	 * 
	 */
	public void start(){	
		if(!mm.getEtatMarche()){
			mm.setEtatMarche(true);
		}
	}
	
	/**
	 * Arreter le Moteur Metronome
	 * 
	 */
	public void stop(){
		if(mm.getEtatMarche()){
			mm.setEtatMarche(false);
		}
	}
	
	/**
	 * flasher le led du tempo
	 * 
	 */
	public void marquerTempo(){
		ihm.allumerLED(1);
	}
	
	/**
	 * flasher le led de la mesure
	 * 
	 */

	public void marquerMesure(){
		ihm.allumerLED(2);
	}
	
	/**
	 * mettre a jour le label du tempo(valeur affichee)
	 * 
	 */
	public void updateLabelTempo(){
		int tempo = mm.getTempo();
		ihm.afficherTempo(tempo);
	}
	
	/**
	 * mettre a jour la valeur du tempo du moteur
	 * 
	 */
	public void updateTempo() { 
		int tempo = (int)(60/ihm.getValeurTempo());
		if (tempo != mm.getTempo()){
			mm.setTempo(tempo);			
		}	
	}
	
	/**
	 * mettre a jour la valeur de la mesure du moteur
	 * 
	 */	
	public void updateMesure(){
		int mesure = ihm.getValeurMesure();
		mm.setMesure(mesure);
	}
	
	/**
	 * mettre a jour la valeur du label de la mesure (valeur affichee)
	 * 
	 */	
	public void updateLabelMesure(){
		int mesure = mm.getMesure();
		ihm.afficherMesure(mesure);
	}

}
